#include "head.h"

// 顺序表的创建：
void Init_Sql_List(f_Arr_list *f)
{
    memset(f->data, 0, 50 * sizeof(f->data[0]));
    f->len = 0;
}

// 顺序表的插入
void pos_insert_list(f_Arr_list * f, F_data data)
{
    // 安全检查
    if (NULL == f)
    {
        printf("表为NULL\n");
        return;
    }
    if (MAX_SIZ <= f->len)
    {
        printf("顺序表 为 满 \n");
        return;
    }

    // 插入
    f->data[f->len] = data;
    // 迭代
    f->len++;
}

// 顺序表的删除：
void pos_del_list(f_Arr_list *f, int pos)
{
    // 1. 安全检查
    if (f == NULL)
    {
        printf("顺序表不存在\n");
        return;
    }

    if (f->len <= 0)
    {
        printf("顺序表无数据，无法删除\n");
        return;
    }

    if (pos > f->len)
    {
        printf("pos参数不合法\n");
        return;
    }
    // =================== 开始删除 ===================
    if (pos > f->len - 1) // 尾删
    {
        f->len--;
        return;
    }

    for (size_t i = pos; i < f->len; i++) // 中间删除
    {
        f->data[i - 1] = f->data[i];
    }

    f->len--;
    return;
}

// 顺序表的查找：
int find_by_id(f_Arr_list *f, int id)
{
    // 1. 安全判断
    if (f == NULL)
    {
        printf("顺序表不存在\n");
        return EOF;
    }
    if (0 == f->len)
    {
        printf("查找位置不合法\n");
        return EOF;
    }

    // 2. 获取数据
    int i;
    for (i = 0; i < f->len; i++)
    {
        if (f->data[i].id = id)
        {
            return i;
        }
    }
    if (i == f->len)
    {
        return EOF;
    }
}

// 顺序表的遍历：
void printf_Sql_List(f_Arr_list *f)
{
    // 安全判断
    if (NULL == f)
    {
        printf("顺序表 为 NULL \n");
        return;
    }
    if (0 == f->len)
    {
        printf("顺序表 内 无数据 \n");
        return;
    }

    for (size_t i = 0; i < f->len; i++)
    {
        printf("班次    机型        起点站  终点站  起飞时间    到达时间    飞行时间    票价  载客量  剩余座位  是否飞\n");
        printf("--------------------------------------------------------------------------------------------------\n");
        printf("%-6d", f->data->id);
        printf("%-15s", f->data->flighttype);
        printf("%-10s", f->data->startcity);
        printf("%-10s", f->data->arrivecity);
        printf("%02d:%02d\t", f->data->starttime[0], f->data->arrivetime[1]);
        printf("%02d:%02d\t", f->data->arrivetime[0], f->data->arrivetime[1]);
        printf("%-10s\t", f->data->flytime);
        printf("%-6d", f->data->value);
        printf("%-8d", f->data->maxNUM);
        printf("%-8d  ", f->data->leftbuyersa);
        printf("%c\n", f->data->whetherfly);
    }
}